package com.fight.strive.sys.modules.rbac.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.fight.strive.sys.modules.common.PageR;
import com.fight.strive.sys.modules.rbac.dto.RbacUserDto;
import com.fight.strive.sys.modules.rbac.entity.RbacUserEntity;
import com.fight.strive.sys.modules.redis.CacheInterface;
import com.fight.strive.sys.modules.validator.StriveValid;

public interface RbacUserService extends IService<RbacUserEntity>, CacheInterface<RbacUserEntity> {

    /**
     * 保存用户信息
     *
     * @param entity entity
     */
    void saveUser(@StriveValid RbacUserEntity entity);

    /**
     * 根据 login name 查询
     *
     * @param loginName login name
     * @return entity
     */
    RbacUserEntity getByLoginName(String loginName);

    /**
     * 根据 id 获取 用户信息
     *
     * @param id id
     * @return entity
     */
    RbacUserEntity getUserById(Long id);

    /**
     * 根据ID删除
     *
     * @param id id
     */
    void removeUser(Long id);

    /**
     * 分页查询，部门下的用户，全部用户，无部门用户
     *
     * @param page 分页查询
     * @return 分页结果
     */
    IPage<RbacUserDto> listUserByPage(PageR<RbacUserEntity> page);
}
